<!DOCTYPE html>
<html lang="zh">
    <head>
    <meta charset="utf-8">

    

    <!-- 渲染优化 -->
    <meta name="renderer" content="webkit">
    <meta name="force-rendering" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="HandheldFriendly" content="True" >
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <!--icon-->

    
        <link rel="shortcut icon" href="/images/favicon.ico">
    
    
        <link rel="icon" type="image/png" sizes="16x16" href="/images/logo16x16.png">
    
    
        <link rel="icon" type="image/png" sizes="32x32" href="/images/logo32x32.png">
    
    
    


    <!-- meta -->


<title>临帖宝</title>





    <!-- OpenGraph -->
 
    <meta name="description" content="Combine Images                                                 #dropArea {             margin: 20px 0;             padding: 10px;             background-color: #fff;             bor">
<meta property="og:type" content="website">
<meta property="og:title" content="临帖宝">
<meta property="og:url" content="http://example.com/poem/imageStitcher/index.html">
<meta property="og:site_name" content="临帖宝">
<meta property="og:description" content="Combine Images                                                 #dropArea {             margin: 20px 0;             padding: 10px;             background-color: #fff;             bor">
<meta property="og:locale">
<meta property="og:image" content="http://example.com/poem/images/grid.svg">
<meta property="article:published_time" content="2024-08-19T06:44:41.935Z">
<meta property="article:modified_time" content="2024-08-19T06:44:41.935Z">
<meta property="article:author" content="zhanghao">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="http://example.com/poem/images/grid.svg">


    
<link rel="stylesheet" href="/css/style/main.css">
 

    
    
        <link rel="stylesheet" id="hl-default-theme" href="/css/highlight/default.css" media="none" >
        
            <link rel="stylesheet" id="hl-dark-theme" href="/css/highlight/dark.css" media="none">
        
    

    
    

    
    
<link rel="stylesheet" href="/css/style/dark.css">

    
<script src="/js/darkmode.js"></script>



     

    <!-- custom head -->

<meta name="generator" content="Hexo 5.4.2"><link rel="alternate" href="/atom.xml" title="临帖宝" type="application/atom+xml">
</head>

    <body>
        <div id="app" tabindex="-1">
            <header class="header">
    <div class="header__left">
        <a href="/" class="button">
            <span class="logo__text">临帖宝</span>
        </a>
    </div>
    <div class="header__right">
        
            <div class="navbar__menus">
                
                    <a href="/" class="navbar-menu button">首页</a>
                
                    <a href="/shufa/index.html" class="navbar-menu button">书法</a>
                
                    <a href="/discovery/" class="navbar-menu button">发现</a>
                
                    <a href="/categories/" class="navbar-menu button">分类</a>
                
                    <a href="/tags/" class="navbar-menu button">标签</a>
                
                    <a href="/app/" class="navbar-menu button">临帖宝App</a>
                
                    <a href="/submission/" class="navbar-menu button">投稿</a>
                
            </div>
        
        
        
    <a href="/search/" id="btn-search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="24" height="24" fill="currentColor" stroke="currentColor" stroke-width="32"><path d="M192 448c0-141.152 114.848-256 256-256s256 114.848 256 256-114.848 256-256 256-256-114.848-256-256z m710.624 409.376l-206.88-206.88A318.784 318.784 0 0 0 768 448c0-176.736-143.264-320-320-320S128 271.264 128 448s143.264 320 320 320a318.784 318.784 0 0 0 202.496-72.256l206.88 206.88 45.248-45.248z"></path></svg>
    </a>


        
        
    <a href="javaScript:void(0);" id="btn-toggle-dark">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>
    </a>


        
            <a class="dropdown-icon button" id="btn-dropdown" tabindex="0"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width='24' height='24' fill="none" stroke="currentColor" stroke-width="0.7" stroke-linecap="round" stroke-linejoin="round"><path fill="currentColor" d="M3.314,4.8h13.372c0.41,0,0.743-0.333,0.743-0.743c0-0.41-0.333-0.743-0.743-0.743H3.314c-0.41,0-0.743,0.333-0.743,0.743C2.571,4.467,2.904,4.8,3.314,4.8z M16.686,15.2H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,15.2,16.686,15.2z M16.686,9.257H3.314c-0.41,0-0.743,0.333-0.743,0.743s0.333,0.743,0.743,0.743h13.372c0.41,0,0.743-0.333,0.743-0.743S17.096,9.257,16.686,9.257z"></path></svg></a>
            <div class="dropdown-menus" id="dropdown-menus">
                
                    <a href="/" class="dropdown-menu button">首页</a>
                
                    <a href="/shufa/index.html" class="dropdown-menu button">书法</a>
                
                    <a href="/discovery/" class="dropdown-menu button">发现</a>
                
                    <a href="/categories/" class="dropdown-menu button">分类</a>
                
                    <a href="/tags/" class="dropdown-menu button">标签</a>
                
                    <a href="/app/" class="dropdown-menu button">临帖宝App</a>
                
                    <a href="/submission/" class="dropdown-menu button">投稿</a>
                
            </div>
        
    </div>
</header>


            <main class="main">
    

<div class="post-title">
    <h1 class="post-title__text">
        
    </h1>
    <div class="post-title__meta">
        <a href="/archives/2024/08/" class="post-meta__date button">2024-08-19</a>
        
 
        
     
    <span id="leancloud_container_page_pv" hidden>
        <span class="separate-dot"></span>
        <span></span>
        <span id="leancloud_value_page_pv"></span>
        <span>Views</span>
    </span>

    


 

 
    </div>
</div>



<article class="post content-card">
    <div class="post__header"></div>
    <div class="post__content">
        
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Combine Images</title>
    <script src="https://cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js"></script>
    <script src="../leancloud.js"></script>
    <script src="../js/shufaDictJS.js"></script>
    <link rel="stylesheet" href="../css/shufaDictCSS.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue@3"></script>
    <script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.3/dist/confetti.browser.min.js"></script>
    <style>
        #dropArea {
            margin: 20px 0;
            padding: 10px;
            background-color: #fff;
            border: 2px dashed #007bff;
            border-radius: 5px;
            width: calc(100% - 44px);
            /* Adjust width for padding and border */
            cursor: pointer;
        }

        #dropArea.highlight {
            background-color: #f0f0f0;
            /* Light grey background */
            border: 2px dashed #000;
            /* Dashed border */
        }

        button {
            background-color: #007bff;
            color: white;
            padding: 10px 15px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            margin-right: 10px;
            font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
        }

        button:hover {
            background-color: #0056b3;
        }

        .progress-container {
            width: 100%;
            background-color: #eee;
            margin: 20px 0;
            height: 20px;
            border-radius: 5px;
        }

        .progress-bar {
            height: 100%;
            background-color: #007bff;
            width: 0%;
            /* Initial width */
            border-radius: 5px;
            text-align: center;
            color: white;
            line-height: 20px;
            /* To center text vertically */
        }

        #canvas {
            border: 0px solid #000;
            margin-top: 10px;
            width: 100%;
            height: auto;
            /* Adjust based on your needs */
        }

        #downloadLink {
            display: block;
            cursor: pointer;
        }

        #title {
            text-align: center;
            flex: 2;
            text-align: center;
            font-weight: bold;
        }

        #loading_overlay {
            display: flex;
            justify-content: center;
            align-items: center;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            /* 半透明背景 */
        }

        #loadingImage {
            max-width: 100%;
            max-height: 100%;
        }
        #buttonContainer2 {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px;
            max-width: 1200px; /* 可以根据需要调整 */
            margin: 0 auto; /* 水平居中 */
        }
        #switchButton {
            background-color: var(--main-color);
        }
    </style>
</head>

<body>
    <div id="buttonContainer">
        <div id="backButton"></div>
        <div id="title"></div>
        <a id="downloadLink" onclick="addDownloadButton()" >下载图片</a>
    </div>

    <div id="buttonContainer2">
        
        <button id="switchButton" onclick="addToggleButton()">切换方向</button>
        
    </div>
    
    <!-- <h1>Image Stitcher</h1> -->
    <!-- <div id="dropArea">
        <p>Drag and drop images here or click to select</p>
        <input type="file" multiple id="fileInput" style="display: none;">
    </div>
    <button onclick="combineImages()">Combine Images</button>
    <button onclick="resetCanvas()">Reset</button> -->
    <!-- <div class="progress-container">
        <div class="progress-bar" id="progressBar"></div>
    </div> -->
    <!-- <a id="downloadLink" href="#" style="display:none;">下载图片</a>
    <br> -->
    <canvas id="canvas"> </canvas>
    <div id="loading_overlay">
        <img id="loadingImage" src="../images/grid.svg" />
    </div>

    <script>

        initLeanCloud()
        let blob = null;
        let canvasWidth = 0;
        let canvasHeight = 0;
        let isHorizontal = false;
        var loading_overlay = document.getElementById('loading_overlay');
        loading_overlay.style.display = 'flex';
        var img = document.getElementById('backButton');
        var title = document.getElementById('title');
        img.addEventListener('click', function () {
            window.history.back()
        });
        function switchOrientation() {
            addToggleButton()
        }
        // 在页面加载时调用此函数
        addToggleButton();
        // 添加切换按钮的函数
        function addDownloadButton() {
            if (blob == null) {
                return
            }
            uploadImg(blob)
        }
        function addToggleButton() {
            const button = document.getElementById('switchButton');
            // button.textContent = '切换拼接方向';
            button.onclick = function () {
                isHorizontal = !isHorizontal;
                combineImages();
            };

            const canvas = document.getElementById('canvas');
            if (canvas && canvas.parentNode) {
                canvas.parentNode.insertBefore(button, canvas);
            } else {
                // 如果找不到 canvas 或其父元素，就将按钮添加到 body 的开头
                document.body.insertBefore(button, document.body.firstChild);
            }
        }
        async function combineImages() {
            var imageUrls = JSON.parse(localStorage.getItem('selectedImageUrls')) || [];
            const images = [];
            const texts = [];
            imageUrls.forEach(function (dic, index) {
                images.push(dic.dict_img),
                    texts.push(dic.dict_name)
            });
            title.innerHTML = texts.join('');
            if (images.length < 1) {
                alert('图片数组为空。');
                return;
            }
            let loadedImages = [];
            for (let i = 0; i < images.length; i++) {
                try {
                    const dataUrl = await loadImageAsDataUrl(images[i]);
                    const img = new Image();
                    img.src = dataUrl;
                    await new Promise((resolve, reject) => {
                        img.onload = resolve;
                        img.onerror = reject;
                    });
                    loadedImages.push(img);
                } catch (error) {
                    console.error('加载图片失败：', error);
                    alert('加载图片失败：' + images[i]);
                }
            }
            // 继续处理加载好的图片...
            let totalHeight = 0;
            let minWidth = Infinity;

            let totalWidth = 0;
            let maxHeight = 0;
            // 找出最小宽度
            loadedImages.forEach(img => {
                minWidth = Math.min(minWidth, img.width);
            });

            if (isHorizontal) {
                // 计算总宽度和最大高度
                loadedImages.forEach(img => {
                    totalWidth += img.width;
                    maxHeight = Math.max(maxHeight, img.height);
                });
            } else {
                // 计算调整后的总高度
                loadedImages.forEach(img => {
                    let aspectRatio = img.height / img.width;
                    let newHeight = minWidth * aspectRatio;
                    totalHeight += newHeight;
                });
            }

            renderImages(loadedImages, isHorizontal ? totalWidth : minWidth, isHorizontal ? maxHeight : totalHeight);
        }
        async function loadImageAsDataUrl(url) {
            const proxyUrl = `https://proxyimage.lintiebao.cn/proxy?url=${encodeURIComponent(url)}`;
            const response = await fetch(proxyUrl);
            const blob = await response.blob();
            return new Promise((resolve, reject) => {
                const reader = new FileReader();
                reader.onloadend = () => resolve(reader.result);
                reader.onerror = reject;
                reader.readAsDataURL(blob);
            });
        }
        async function renderImages(images, canvasWidth, canvasHeight) {
            const canvas = document.getElementById('canvas');
            if (!canvas) {
                console.error('找不到 canvas 元素');
                alert('无法渲染图像：找不到 canvas 元素');
                return;
            }
            const ctx = canvas.getContext('2d');
            if (!ctx) {
                console.error('无法获取 canvas 2D 上下文');
                alert('无法渲染图像：canvas 上下文不可用');
                return;
            }
            const maxWidth = 3000; // 设置最大宽度
            let totalWidth = 0;
            let totalHeight = 0;
            let commonWidth = 0;
            let commonHeight = 0;

            if (isHorizontal) {
                // 横向拼接：找出最小高度
                commonHeight = Math.min(...images.map(img => img.height));
                images.forEach(img => {
                    let aspectRatio = img.width / img.height;
                    totalWidth += commonHeight * aspectRatio;
                });
                // 如果总宽度超过最大宽度，进行缩放
                if (totalWidth > maxWidth) {
                    let scale = maxWidth / totalWidth;
                    commonHeight *= scale;
                    totalWidth = maxWidth;
                }
                canvas.width = totalWidth;
                canvas.height = commonHeight;
            } else {
                // 竖直拼接：使用传入的 canvasWidth
                commonWidth = canvasWidth;
                images.forEach(img => {
                    let aspectRatio = img.height / img.width;
                    totalHeight += commonWidth * aspectRatio;
                });
                canvas.width = commonWidth;
                canvas.height = totalHeight;
            }
            let offset = 0;
            for (let img of images) {
                if (isHorizontal) {
                    let imgWidth = (img.width / img.height) * commonHeight;
                    ctx.drawImage(img, offset, 0, imgWidth, commonHeight);
                    offset += imgWidth;
                } else {
                    let imgHeight = (img.height / img.width) * commonWidth;
                    ctx.drawImage(img, 0, offset, commonWidth, imgHeight);
                    offset += imgHeight;
                }
            }
            blob = await new Promise(resolve => canvas.toBlob(resolve));
            self.canvasWidth = canvasWidth;
            self.canvasHeight = canvasHeight;
            if (typeof loading_overlay !== 'undefined' && loading_overlay) {
                loading_overlay.style.display = 'none';
            }
            
            confetti({
                particleCount: 100,
                spread: 70,
                origin: { y: 0.6 }
            });

            // uploadImg(blob)
        }
        async function uploadImg(blob) {
            const file = new AV.File('combined_image.png', blob);

            try {
                // 设置文件的过期时间（10分钟后）
                const expirationTime = new Date(new Date().getTime() + 10 * 60 * 1000);
                file.set('expirationTime', expirationTime);
                // 保存文件（只保存一次）
                const savedFile = await file.save();
                const imageUrl = savedFile.url();
                // 展示图片
                displayImage(imageUrl, canvasWidth, canvasHeight);
                // 存储文件对象ID,用于后续删除
                window.combinedImageId = savedFile.id;
                console.log('图片上传成功，URL:', imageUrl);

                
            } catch (error) {
                console.error('上传图片失败:', error);
                alert('上传图片失败: ' + error.message);
            }
        }
        // 删除图片的函数
        // async function deleteImage(fileId) {
        //     if (fileId) {
        //         try {
        //             const file = AV.File.createWithoutData(fileId);
        //             await file.destroy();
        //             console.log('图片已从LeanCloud删除');
        //         } catch (error) {
        //             console.error('删除图片失败:', error);
        //         }
        //     }
        // }
        function displayImage(url, width, height) {
            const img = new Image();
            img.onload = function () {
                const canvas = document.getElementById('canvas');
                if (canvas && canvas.parentNode) {
                    const container = canvas.parentNode;
                    container.replaceChild(img, canvas);
                } else {
                    document.body.appendChild(img);
                }

                // 设置img的样式
                img.style.maxWidth = '100%';
                img.style.maxHeight = '80vh';
                img.style.width = 'auto';
                img.style.height = 'auto';
                img.style.display = 'block';
                img.style.marginLeft = 'auto';
                img.style.marginRight = 'auto';
            };
            img.onerror = function () {
                console.error('图片加载失败');
            };
            img.src = url;
            if (typeof loading_overlay !== 'undefined' && loading_overlay) {
                loading_overlay.style.display = 'none';
            }
            const button = document.getElementById('switchButton');
            button.style.display = 'none';
            Swal.fire({
                text: '长按图片分享或保存至手机相册！',
                confirmButtonText: '确定',
                // cancelButtonText: '取消',
                // showCancelButton: true, // 显示取消按钮
                reverseButtons: true,
                // 自定义样式
                customClass: {
                    container: 'custom-swal-container',
                    popup: 'custom-swal-popup',
                    // 修改标题样式
                    title: 'custom-swal-title',
                    // 修改内容文字样式
                    content: 'custom-swal-content',
                    // 修改确认按钮样式
                    confirmButton: 'custom-swal-confirm-button',
                    // 修改取消按钮样式（如果有的话）
                    cancelButton: 'custom-swal-cancel-button'
                },
                // 直接应用内联样式
                buttonsStyling: false, // 禁用默认的按钮样式
            })
        }
        document.addEventListener('DOMContentLoaded', function () {
            var dropArea = document.getElementById('dropArea');
            var fileInput = document.getElementById('fileInput'); // Make sure this matches the ID of your file input

            function preventDefaults(e) {
                e.preventDefault();
                e.stopPropagation();
            }

            function highlight(e) {
                dropArea.classList.add('highlight');
            }

            function unhighlight(e) {
                dropArea.classList.remove('highlight');
            }

            function handleDrop(e) {
                var dt = e.dataTransfer;
                var files = dt.files;

                fileInput.files = files;
                combineImages();
            }
        });
        function resetCanvas() {
            // Clear the file input
            var fileInput = document.getElementById('fileInput');
            fileInput.value = "";

            // Clear the canvas
            var canvas = document.getElementById('canvas');
            var ctx = canvas.getContext('2d');
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            // Hide the download link
            // var downloadLink = document.getElementById('downloadLink');
            // downloadLink.style.display = 'none';

            // Optionally, reset other elements on the page as needed
        }

        combineImages()
        hiddenEle()

    </script>
</body>

</html>
    </div>
     
    <div class="post-footer__meta"><p>updated at 2024-08-19</p></div> 
    <div class="post-entry__tags"></div> 
</article>






</main>

            <footer class="footer">
    
    


    
    
        <span id="leancloud_container_site_uv" hidden>
            <span></span>
            <span id="leancloud_value_site_uv"></span>
            <span>Viewers</span>
            
                <span>|</span>
            
        </span>
    
    
        <span id="leancloud_container_site_pv" hidden>
            <span></span>
            <span id="leancloud_value_site_pv"></span>
            <span>Views</span>
            
        </span>
    

     
 

 
    
        
        <p class="footer-copyright">
            Copyright © 2022&nbsp;-&nbsp;2025 <a href="/">临帖宝</a>
        </p>
    
    
    <!-- <p>Powered by <a href="https://hexo.io" target="_blank">Hexo</a> | Theme - <a href="https://github.com/ChrAlpha/hexo-theme-cards" target="_blank">Cards</a></p> -->
</footer>

        </div>
         

 

 

 
    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement('script');
            hm.src = 'https://hm.baidu.com/hm.js?448902475a10578c4b5236aad9784d9c';
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
 

 



 



 


    
    <script>
        (function () {
            function getRecord(Counter, target) {
                return new Promise(function (resolve, reject) {
                    Counter('get', '/classes/Counter?where=' + encodeURIComponent(JSON.stringify({target})))
                        .then(response => response.json())
                        .then(({results}) => {
                            if (results && results.length > 0) {
                                var record = results[0];
                                resolve(record);
                            } else {
                                Counter('post', '/classes/Counter', {
                                        target, time: 0
                                    })
                                    .then(response => response.json())
                                    .then(record => {
                                        resolve(record);
                                    }).catch(error => {
                                        console.error('Failed to create', error);
                                        reject(error);
                                    });
                            }
                        }).catch(error => {
                            console.error('LeanCloud Counter Error', error);
                            reject(error);
                        });
                })
            }
        
            function buildIncrement(objectId) {
                return {
                    "method": "PUT",
                    "path": `/1.1/classes/Counter/${ objectId }`,
                    "body": {
                        "time": {
                            '__op': 'Increment',
                            'amount': 1
                        }
                    }
                }
            }
        
            function increment(Counter, incrArr) {
                return new Promise(function (resolve, reject) {
                    Counter('post', '/batch', {
                        "requests": incrArr
                    }).then((res) => {
                        resolve(res);
                    }).catch(error => {
                        console.error('Failed to save visitor count', error);
                        reject(error);
                    });
                });
            }
        
            function validUV() {
                var key = 'LeanCloud_UV_Flag';
                var flag = localStorage.getItem(key);
                if (flag) {
                    if (new Date().getTime() - parseInt(flag) <= 86400000) {
                        return false;
                    }
                }
                localStorage.setItem(key, new Date().getTime().toString());
                return true;
            }
        
            function addCount(Counter) {
                var enableIncr = 'leancloud' === 'leancloud';
                var getterArr = [];
                var incrArr = [];
                var pvCtn = document.querySelector('#leancloud_container_site_pv');
                if (pvCtn || enableIncr) {
                    var pvGetter = getRecord(Counter, 'site-pv').then((record) => {
                        incrArr.push(buildIncrement(record.objectId))
                        var ele = document.querySelector('#leancloud_value_site_pv');
                        if (ele) {
                            ele.innerText = record.time + 1;
                            if (pvCtn) {
                                pvCtn.style.display = 'inline';
                            }
                        }
                    });
                    getterArr.push(pvGetter);
                }
                var uvCtn = document.querySelector('#leancloud_container_site_uv');
                if (uvCtn || enableIncr) {
                    var uvGetter = getRecord(Counter, 'site-uv').then((record) => {
                        var vuv = validUV();
                        vuv && incrArr.push(buildIncrement(record.objectId))
                        var ele = document.querySelector('#leancloud_value_site_uv');
                        if (ele) {
                            ele.innerText = record.time + (vuv ? 1 : 0);
                            if (uvCtn) {
                                uvCtn.style.display = 'inline';
                            }
                        }
                    });
                    getterArr.push(uvGetter);
                }
                if ('false' === 'true') {
                    var viewCtn = document.querySelector('#leancloud_container_page_pv');
                    if (viewCtn || enableIncr) {
                        var target = decodeURI('/poem/imageStitcher/index.html');
                        var viewGetter = getRecord(Counter, target).then((record) => {
                            incrArr.push(buildIncrement(record.objectId))
                            if (viewCtn) {
                                var ele = document.querySelector('#leancloud_value_page_pv');
                                if (ele) {
                                    ele.innerText = (record.time || 0) + 1;
                                    viewCtn.style.display = 'inline';
                                }
                            }
                        });
                        getterArr.push(viewGetter);
                    }
                }
                if (enableIncr) {
                    Promise.all(getterArr).then(() => {
                        incrArr.length > 0 && increment(Counter, incrArr);
                    })
                }
            }
        
            var app_id = 'ynMAn7XOvvxivG61hKnibx0P-gzGzoHsz';
            var app_key = 'bJozAX2UEPCNqmriHhTiceIc';
            var server_url = 'https://api.lintiebao.cn';
        
            function fetchData(api_server) {
                var Counter = (method, url, data) => {
                    return fetch(`${ api_server }/1.1${ url }`, {
                        method,
                        headers: {
                                'X-LC-Id': app_id,
                                'X-LC-Key': app_key,
                                'Content-Type': 'application/json',
                            },
                            body: JSON.stringify(data)
                    });
                };
                addCount(Counter);
            }
            var api_server = app_id.slice(-9) !== '-MdYXbMMI' ? server_url : `https://${ app_id.slice(0, 8).toLowerCase() }.api.lncldglobal.com`;
            if (api_server) {
                fetchData(api_server);
            } else {
                fetch('https://app-router.leancloud.cn/2/route?appId=' + app_id)
                    .then(response => response.json())
                    .then(({api_server}) => {
                        fetchData('https://' + api_server);
                    });
            }
        })();
    </script>

 


    
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>

    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.4.1/dist/jquery.fancybox.min.css">

    
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.4.1/dist/jquery.fancybox.min.js"></script>

    <script>
        let lazyloadT = Boolean('false'),
            auto_fancybox = Boolean('true')
        if (auto_fancybox) {
            if ($('.post__content .individual-images').length > 0) {
                        console.log('individual-images')
                        $(".post__content").find('.individual-images').each(function () {
                        var element = document.createElement("a");
                        $(element).attr("data-fancybox", "gallery");
                        $(element).attr("href", $(this).attr("src"));
                        if (lazyloadT) {
                            $(element).attr("href", $(this).attr("data-srcset"));
                        }
                        $(this).wrap(element);
                    });
                }else{
                    $(".post__content").find('img').each(function () {
                    var element = document.createElement("a");
                    $(element).attr("data-fancybox", "gallery");
                    $(element).attr("href", $(this).attr("src"));
                    if (lazyloadT) {
                        $(element).attr("href", $(this).attr("data-srcset"));
                    }
                    $(this).wrap(element);
                });
            }

            
        } else {
            $(".post__content").find("fancybox").find('img').each(function () {
                var element = document.createElement("a");
                $(element).attr("data-fancybox", "gallery");
                $(element).attr("href", $(this).attr("src"));
                if (lazyloadT) {
                    $(element).attr("href", $(this).attr("data-srcset"));
                }
                $(this).wrap(element);
            });
        }
    </script>
 

 

 


    <script src='https://cdn.jsdelivr.net/npm/mermaid@8.10.2/dist/mermaid.min.js'></script>
    <script>
            mermaid.initialize(JSON.stringify(''));
    </script>
 

 




    </body>
</html>
